Show all our lenses

Dependencies: ISET3d-v4, ISETCam, isetlens
D. Cardinal, 2022
Note: As of March, 2022, there is a bug in the 2021 version of Matlab, so that the images don't properly render in the LiveScript. So you can either: run this as a Script (using Right-Click from the file tree), or snag an early release of 2022, or simply look at the HTML version that we've exported from a properly running system.

Initialize ISET and Docker

ieInit;
if ~piDockerExists, piDockerConfig; end

Read a Scene and add a Light

thisR = piRecipeDefault('scene name','chessSet');
Read 9 materials. Read 3 textures. ***Scene parsed.
lightName = 'from camera';
ourLight = piLightCreate(lightName,...
'type','distant',...
'cameracoordinate', true);
recipeSet(thisR,'lights', ourLight,'add');

Set render quality

% Set resolution for speed or quality.
thisR.set('film resolution',round([600 600]*0.5)); % 2 is high res. 0.25 for speed
thisR.set('rays per pixel',64); % 128 for high quality
% Base parameters -- need to find a good set
% Pick out a bit of the image to look at. Middle dimension is up.
% Third dimension is z. I picked a from/to that put the ruler in the
% middle. The in focus is about the pawn or rook.
thisR.set('from',[0 0.14 -0.7]); % Get higher and back away than default
thisR.set('to', [0.05 -0.07 0.5]); % Look down default compared to default
%thisR.set('aperture diameter',1); % thisR.summarize('all');

Determine the range of object depths in our scene

depthRange = thisR.get('depth range');
Complete render took: 6.92e+00 seconds.*** Rendering time for ChessSet: 6.9 sec *** exr2bin done.
%depthRange = [0.1674, 3.3153]; % Chess set distances in meters

Add camera with lens

%lensfile = 'dgauss.22deg.50.0mm.json'; % 30 38 18 10
lensFiles = lensC.list('quiet', true);
for ii = 1:numel(lensFiles)
lensFileName = lensFiles(ii).name;
lensFile = fullfile(lensFiles(ii).folder, lensFileName);
fprintf('Using lens: %s\n',lensFile);
thisR.camera = piCameraCreate('omni','lensFile',lensFile);
thisR.set('focal distance',mean(depthRange));
thisR.set('film diagonal',33);
Using lens: B:\iset\isetlens\data\lens\2ElLens.json
Using lens: B:\iset\isetlens\data\lens\2el.XXdeg.100mm.json
Using lens: B:\iset\isetlens\data\lens\2el.XXdeg.12mm.json
Using lens: B:\iset\isetlens\data\lens\2el.XXdeg.50mm.json
Using lens: B:\iset\isetlens\data\lens\2el.XXdeg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\dgauss.22deg.100.0mm.json
Using lens: B:\iset\isetlens\data\lens\dgauss.22deg.12.5mm.json
Using lens: B:\iset\isetlens\data\lens\dgauss.22deg.3.0mm.json
Using lens: B:\iset\isetlens\data\lens\dgauss.22deg.50.0mm.json
Using lens: B:\iset\isetlens\data\lens\dgauss.22deg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\dgauss.22deg.6.0mm_v3.json
Using lens: B:\iset\isetlens\data\lens\dgauss.77deg.3.5201mm.json
Using lens: B:\iset\isetlens\data\lens\endoscope.json
Using lens: B:\iset\isetlens\data\lens\endoscopeFixed.json
Using lens: B:\iset\isetlens\data\lens\fisheye.87deg.100.0mm.json
Using lens: B:\iset\isetlens\data\lens\fisheye.87deg.12.5mm.json
Using lens: B:\iset\isetlens\data\lens\fisheye.87deg.3.0mm.json
Using lens: B:\iset\isetlens\data\lens\fisheye.87deg.50.0mm.json
Using lens: B:\iset\isetlens\data\lens\fisheye.87deg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\gullstrand.json
Using lens: B:\iset\isetlens\data\lens\microlens.json
Using lens: B:\iset\isetlens\data\lens\petzval.12deg.100.0mm.json
Using lens: B:\iset\isetlens\data\lens\petzval.12deg.12.5mm.json
Using lens: B:\iset\isetlens\data\lens\petzval.12deg.3.0mm.json
Using lens: B:\iset\isetlens\data\lens\petzval.12deg.50.0mm.json
Using lens: B:\iset\isetlens\data\lens\petzval.12deg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\reversed.telephoto.42deg.27mm.json
Using lens: B:\iset\isetlens\data\lens\reversed.telephoto.42deg.3.5201mm.json
Using lens: B:\iset\isetlens\data\lens\reversed.telephoto.77deg.3.5201mm.json
Using lens: B:\iset\isetlens\data\lens\telephoto.250mm.json
Using lens: B:\iset\isetlens\data\lens\tessar.22deg.100.0mm.json
Using lens: B:\iset\isetlens\data\lens\tessar.22deg.12.5mm.json
Using lens: B:\iset\isetlens\data\lens\tessar.22deg.3.0mm.json
Using lens: B:\iset\isetlens\data\lens\tessar.22deg.50.0mm.json
Using lens: B:\iset\isetlens\data\lens\tessar.22deg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.40deg.100.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.40deg.12.5mm.json
Using lens: B:\iset\isetlens\data\lens\wide.40deg.3.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.40deg.50.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.40deg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.56deg.100.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.56deg.12.5mm.json
Using lens: B:\iset\isetlens\data\lens\wide.56deg.3.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.56deg.50.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.56deg.6.0mm.json
Using lens: B:\iset\isetlens\data\lens\wide.56deg.6.0mm_v3.json
Using lens: B:\iset\isetlens\data\lens\wide.77deg.4.38mm.json

Render and display

piWrite(thisR);
try
oi = piRender(thisR,'render type',{'radiance', 'depth'});
oi = oiSet(oi,'name',sprintf('Lens: %s ',lensFileName));
fprintf('----------------------------\n');
fprintf('Rendered using: %s',lensFileName);
img = oiShowImage(oi,-1);
figure('name',lensFileName), imshow(img,'Border','tight');
fprintf('----------------------------\n');
drawnow; %doesn't seem to help
catch
warning('Lens: %s failed to render.\n', lensFile);
end
Complete render took: 9.84e+00 seconds.*** Rendering time for ChessSet: 9.8 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\2ElLens.json
----------------------------
Rendered using: 2ElLens.json
----------------------------
Complete render took: 9.94e+00 seconds.*** Rendering time for ChessSet: 9.9 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: 2el.XXdeg.100mm.json
----------------------------
Complete render took: 9.29e+00 seconds.*** Rendering time for ChessSet: 9.3 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: 2el.XXdeg.12mm.json
----------------------------
Complete render took: 9.61e+00 seconds.*** Rendering time for ChessSet: 9.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: 2el.XXdeg.50mm.json
----------------------------
Complete render took: 8.62e+00 seconds.*** Rendering time for ChessSet: 8.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: 2el.XXdeg.6.0mm.json
----------------------------
Complete render took: 1.10e+01 seconds.*** Rendering time for ChessSet: 11.0 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: dgauss.22deg.100.0mm.json
----------------------------
Complete render took: 9.06e+00 seconds.*** Rendering time for ChessSet: 9.1 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: dgauss.22deg.12.5mm.json
----------------------------
Complete render took: 8.45e+00 seconds.*** Rendering time for ChessSet: 8.4 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: dgauss.22deg.3.0mm.json
----------------------------
Complete render took: 1.04e+01 seconds.*** Rendering time for ChessSet: 10.4 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: dgauss.22deg.50.0mm.json
----------------------------
Complete render took: 9.08e+00 seconds.*** Rendering time for ChessSet: 9.1 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: dgauss.22deg.6.0mm.json
----------------------------
Complete render took: 8.91e+00 seconds.*** Rendering time for ChessSet: 8.9 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: dgauss.22deg.6.0mm_v3.json
----------------------------
Complete render took: 8.73e+00 seconds.*** Rendering time for ChessSet: 8.7 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\isetlens\data\lens\dgauss.77deg.3.5201mm.json
----------------------------
Rendered using: dgauss.77deg.3.5201mm.json
----------------------------
Complete render took: 3.65e+00 seconds.
Warning: Docker did not run correctly
Status: 1 Result: pbrt version 4 (built Mar 4 2022 at 17:58:41) Copyright (c)1998-2021 Matt Pharr, Wenzel Jakob, and Greg Humphreys. The source code to pbrt (but *not* the book contents) is covered by the Apache 2.0 License. See the file LICENSE.txt for the conditions of the license. [1m[31mWarning[0m: Specified aperture radius 0.0025000002 is greater than maximum possible 0.000081041755. Clamping it. [1m[31mError[0m: Unable to trace ray from film to scene for thick lens approximation. Is aperture stop extremely small? *** Rendering time for ChessSet: 3.7 sec ***
Warning: Lens: B:\iset\isetlens\data\lens\endoscope.json failed to render.
Complete render took: 3.77e+00 seconds.
Warning: Docker did not run correctly
Status: 1 Result: pbrt version 4 (built Mar 4 2022 at 17:58:41) Copyright (c)1998-2021 Matt Pharr, Wenzel Jakob, and Greg Humphreys. The source code to pbrt (but *not* the book contents) is covered by the Apache 2.0 License. See the file LICENSE.txt for the conditions of the license. [1m[31mWarning[0m: Specified aperture radius 0.0025000002 is greater than maximum possible 0.0020584606. Clamping it. [1m[31mError[0m: Unable to trace ray from film to scene for thick lens approximation. Is aperture stop extremely small? *** Rendering time for ChessSet: 3.8 sec ***
Warning: Lens: B:\iset\isetlens\data\lens\endoscopeFixed.json failed to render.
Complete render took: 1.05e+01 seconds.*** Rendering time for ChessSet: 10.5 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\fisheye.87deg.100.0mm.json
----------------------------
Rendered using: fisheye.87deg.100.0mm.json
----------------------------
Complete render took: 1.00e+01 seconds.*** Rendering time for ChessSet: 10.0 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\fisheye.87deg.12.5mm.json
----------------------------
Rendered using: fisheye.87deg.12.5mm.json
----------------------------
Complete render took: 8.95e+00 seconds.*** Rendering time for ChessSet: 9.0 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\fisheye.87deg.3.0mm.json
----------------------------
Rendered using: fisheye.87deg.3.0mm.json
----------------------------
Complete render took: 1.04e+01 seconds.*** Rendering time for ChessSet: 10.4 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\fisheye.87deg.50.0mm.json
----------------------------
Rendered using: fisheye.87deg.50.0mm.json
----------------------------
Complete render took: 9.37e+00 seconds.*** Rendering time for ChessSet: 9.4 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\fisheye.87deg.6.0mm.json
----------------------------
Rendered using: fisheye.87deg.6.0mm.json
----------------------------
Complete render took: 9.17e+00 seconds.*** Rendering time for ChessSet: 9.2 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\gullstrand.json
----------------------------
Rendered using: gullstrand.json
----------------------------
Complete render took: 3.68e+00 seconds.
Warning: Docker did not run correctly
Status: 1 Result: pbrt version 4 (built Mar 4 2022 at 17:58:41) Copyright (c)1998-2021 Matt Pharr, Wenzel Jakob, and Greg Humphreys. The source code to pbrt (but *not* the book contents) is covered by the Apache 2.0 License. See the file LICENSE.txt for the conditions of the license. [1m[31mWarning[0m: Specified aperture radius 0.0025000002 is greater than maximum possible 0.0000010000001. Clamping it. [1m[31mError[0m: Unable to trace ray from scene to film for thick lens approximation. Is aperture stop extremely small? *** Rendering time for ChessSet: 3.7 sec ***
Warning: Lens: B:\iset\isetlens\data\lens\microlens.json failed to render.
Complete render took: 1.02e+01 seconds.*** Rendering time for ChessSet: 10.2 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\petzval.12deg.100.0mm.json
----------------------------
Rendered using: petzval.12deg.100.0mm.json
----------------------------
Complete render took: 3.82e+01 seconds.*** Rendering time for ChessSet: 38.2 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\petzval.12deg.12.5mm.json
----------------------------
Rendered using: petzval.12deg.12.5mm.json
----------------------------
Complete render took: 8.56e+00 seconds.*** Rendering time for ChessSet: 8.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\petzval.12deg.3.0mm.json
----------------------------
Rendered using: petzval.12deg.3.0mm.json
----------------------------
Complete render took: 9.73e+00 seconds.*** Rendering time for ChessSet: 9.7 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\petzval.12deg.50.0mm.json
----------------------------
Rendered using: petzval.12deg.50.0mm.json
----------------------------
Complete render took: 8.72e+00 seconds.*** Rendering time for ChessSet: 8.7 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\petzval.12deg.6.0mm.json
----------------------------
Rendered using: petzval.12deg.6.0mm.json
----------------------------
Complete render took: 1.06e+01 seconds.*** Rendering time for ChessSet: 10.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\isetlens\data\lens\reversed.telephoto.42deg.27mm.json
----------------------------
Rendered using: reversed.telephoto.42deg.27mm.json
----------------------------
Complete render took: 8.77e+00 seconds.*** Rendering time for ChessSet: 8.8 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\isetlens\data\lens\reversed.telephoto.42deg.3.5201mm.json
----------------------------
Rendered using: reversed.telephoto.42deg.3.5201mm.json
----------------------------
Complete render took: 8.96e+00 seconds.*** Rendering time for ChessSet: 9.0 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\isetlens\data\lens\reversed.telephoto.77deg.3.5201mm.json
----------------------------
Rendered using: reversed.telephoto.77deg.3.5201mm.json
----------------------------
Complete render took: 3.89e+00 seconds.
Warning: Docker did not run correctly
Status: 1 Result: pbrt version 4 (built Mar 4 2022 at 17:58:41) Copyright (c)1998-2021 Matt Pharr, Wenzel Jakob, and Greg Humphreys. The source code to pbrt (but *not* the book contents) is covered by the Apache 2.0 License. See the file LICENSE.txt for the conditions of the license. [1m[31mError[0m: Coefficient must be positive. It looks focusDistance 1 is too short for a given lenses configuration *** Rendering time for ChessSet: 3.9 sec ***
Warning: Lens: B:\iset\isetlens\data\lens\telephoto.250mm.json failed to render.
Complete render took: 1.05e+01 seconds.*** Rendering time for ChessSet: 10.5 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: tessar.22deg.100.0mm.json
----------------------------
Complete render took: 8.94e+00 seconds.*** Rendering time for ChessSet: 8.9 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: tessar.22deg.12.5mm.json
----------------------------
Complete render took: 8.59e+00 seconds.*** Rendering time for ChessSet: 8.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: tessar.22deg.3.0mm.json
----------------------------
Complete render took: 1.02e+01 seconds.*** Rendering time for ChessSet: 10.2 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: tessar.22deg.50.0mm.json
----------------------------
Complete render took: 9.04e+00 seconds.*** Rendering time for ChessSet: 9.0 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: tessar.22deg.6.0mm.json
----------------------------
Complete render took: 9.06e+00 seconds.*** Rendering time for ChessSet: 9.1 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.40deg.100.0mm.json
----------------------------
Complete render took: 9.07e+00 seconds.*** Rendering time for ChessSet: 9.1 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.40deg.12.5mm.json
----------------------------
Complete render took: 8.32e+00 seconds.*** Rendering time for ChessSet: 8.3 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.40deg.3.0mm.json
----------------------------
Complete render took: 9.28e+00 seconds.*** Rendering time for ChessSet: 9.3 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.40deg.50.0mm.json
----------------------------
Complete render took: 8.42e+00 seconds.*** Rendering time for ChessSet: 8.4 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.40deg.6.0mm.json
----------------------------
Complete render took: 9.59e+00 seconds.*** Rendering time for ChessSet: 9.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.56deg.100.0mm.json
----------------------------
Complete render took: 9.09e+00 seconds.*** Rendering time for ChessSet: 9.1 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.56deg.12.5mm.json
----------------------------
Complete render took: 8.51e+00 seconds.*** Rendering time for ChessSet: 8.5 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.56deg.3.0mm.json
----------------------------
Complete render took: 9.56e+00 seconds.*** Rendering time for ChessSet: 9.6 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.56deg.50.0mm.json
----------------------------
Complete render took: 8.74e+00 seconds.*** Rendering time for ChessSet: 8.7 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.56deg.6.0mm.json
----------------------------
Complete render took: 8.86e+00 seconds.*** Rendering time for ChessSet: 8.9 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.
----------------------------
Rendered using: wide.56deg.6.0mm_v3.json
----------------------------
Complete render took: 8.30e+00 seconds.*** Rendering time for ChessSet: 8.3 sec *** exr2bin done.exr2bin done.exr2bin done.exr2bin done.Decoding lens parameters from lens file name B:\iset\iset3d-v4\data\lens\wide.77deg.4.38mm.json
----------------------------
Rendered using: wide.77deg.4.38mm.json
----------------------------
end